En este informe se analizan datos de expresión génica y variables bioquímicas de 65 pacientes con distintos tipos de tratamiento y características tumorales. El objetivo principal es evaluar cómo varía la expresión de 15 genes específicos entre los tratamientos TratA y TratB, así como explorar la distribución de diversos parámetros bioquímicos en la población estudiada. Además, se visualizan patrones globales en la expresión génica mediante un heatmap para identificar posibles agrupamientos entre genes o pacientes. Este análisis busca proporcionar una base sólida para interpretar diferencias biológicas relevantes que podrían tener implicaciones en la personalización de tratamientos médicos.
# Cargar librerías
library(ggplot2)
library(patchwork)
# Definir la ruta
setwd("/Users/estefanialejandracasallassamper/Documents/MASTER/Estadistica y R/mubio02_act1")
# Cargar el dataset
dataset <- read.csv("Dataset expresion genes.csv")
# Lista de genes de interés
genes_interes <- c('AQ_ALOX5', 'AQ_CD274', 'AQ_CHKA', 'AQ_CSF2',
'AQ_FOXO3', 'AQ_IL6', 'AQ_LDHA', 'AQ_LIF',
'AQ_MAPK1', 'AQ_NOS2', 'AQ_IFNG', 'AQ_PDCD1',
'AQ_PPARG', 'AQ_TGFB1', 'AQ_TNF')
# Paleta de colores
colores <- c("tratA" = "blue", "tratB" = "orange")
# Generar diagramas de caja individuales
plots <- list()
for (gene in genes_interes) {
p <- ggplot(dataset, aes(x = trat, y = dataset[[gene]], fill = trat)) +
geom_boxplot() +
scale_fill_manual(values = colores) +
ggtitle(paste("Expresión de", gene, "por Tratamiento")) +
xlab("Tratamiento") +
ylab("Expresión") +
theme_minimal()
plots[[gene]] <- p
}
# Combinación de gráficos con ajuste de columnas
combined_plot <- wrap_plots(plots, ncol = 3)
print(combined_plot)
## Warning: Use of `dataset[[gene]]` is discouraged.
## ℹ Use `.data[[gene]]` instead.
## Use of `dataset[[gene]]` is discouraged.
## ℹ Use `.data[[gene]]` instead.
## Use of `dataset[[gene]]` is discouraged.
## ℹ Use `.data[[gene]]` instead.
## Use of `dataset[[gene]]` is discouraged.
## ℹ Use `.data[[gene]]` instead.
## Use of `dataset[[gene]]` is discouraged.
## ℹ Use `.data[[gene]]` instead.
## Use of `dataset[[gene]]` is discouraged.
## ℹ Use `.data[[gene]]` instead.
## Use of `dataset[[gene]]` is discouraged.
## ℹ Use `.data[[gene]]` instead.
## Use of `dataset[[gene]]` is discouraged.
## ℹ Use `.data[[gene]]` instead.
## Use of `dataset[[gene]]` is discouraged.
## ℹ Use `.data[[gene]]` instead.
## Use of `dataset[[gene]]` is discouraged.
## ℹ Use `.data[[gene]]` instead.
## Use of `dataset[[gene]]` is discouraged.
## ℹ Use `.data[[gene]]` instead.
## Use of `dataset[[gene]]` is discouraged.
## ℹ Use `.data[[gene]]` instead.
## Use of `dataset[[gene]]` is discouraged.
## ℹ Use `.data[[gene]]` instead.
## Use of `dataset[[gene]]` is discouraged.
## ℹ Use `.data[[gene]]` instead.
## Use of `dataset[[gene]]` is discouraged.
## ℹ Use `.data[[gene]]` instead.
Los boxplots muestran la variación en la expresión génica entre los tratamientos “tratA” y “tratB”, destacando diferencias en la mediana de genes como AQ_FOXO3 y AQ_TNF, lo que sugiere que los tratamientos tienen un impacto significativo en la regulación de estos genes. En particular, los tratamientos parecen influir en procesos metabólicos e inflamatorios, como lo indican los genes relacionados con la inflamación (AQ_IL6, AQ_TNF) y la respuesta inmune (AQ_IFNG, AQ_CD274). Además, la dispersión observada en la expresión de algunos genes dentro de cada tratamiento revela una heterogeneidad en la respuesta, lo que sugiere que factores biológicos como la edad, el estado de salud o características genéticas de los pacientes pueden influir en cómo cada muestra responde al tratamiento. En algunos genes como AQ_FOXO3, se identifican valores atípicos que podrían reflejar una mayor sensibilidad de esos genes a las condiciones experimentales o a interacciones específicas con el tratamiento. Este análisis nos permite no solo observar diferencias en la expresión media de los genes, sino también cómo los tratamientos afectan la regulación de genes clave en procesos biológicos como la inflamación, el metabolismo y la respuesta inmune.
# Lista de variables bioquímicas
biochemical_params <- c('glucosa', 'leucocitos', 'linfocitos', 'neutrofilos',
'chol', 'hdl', 'hierro', 'igA', 'igE', 'igG',
'igN', 'ldl', 'pcr', 'transferrina', 'trigliceridos', 'cpk')
# Variables bioquímicas presentes en el dataset
available_params <- intersect(biochemical_params, colnames(dataset))
# Mostrar las variables disponibles
print(available_params)
## [1] "glucosa" "leucocitos" "linfocitos" "neutrofilos"
## [5] "chol" "hdl" "hierro" "igA"
## [9] "igE" "igG" "igN" "ldl"
## [13] "pcr" "transferrina" "trigliceridos" "cpk"
# Crear gráficos de densidad
for (param in available_params) {
p <- ggplot(dataset, aes(x = !!sym(param))) + # Usamos !!sym() para nombres de columnas dinámicos
geom_density(fill = "orange", alpha = 0.5) +
labs(title = paste("Gráfico de Densidad de", param),
x = param, y = "Densidad") +
theme_minimal()
# Imprimir el gráfico
print(p)
}
# Histogramas para cada variable
for (param in available_params) {
p <- ggplot(dataset, aes(x = !!sym(param))) +
geom_histogram(bins = 30, fill = "blue", color = "black", alpha = 0.7) +
labs(title = paste("Histograma de", param),
x = param, y = "Frecuencia") +
theme_minimal()
# Mostrar el gráfico
print(p)
}
# Evaluar normalidad con la prueba de Shapiro-Wilk
for (param in available_params) {
test_result <- shapiro.test(dataset[[param]])
cat("Prueba Shapiro-Wilk para", param, ": p-valor =", test_result$p.value, "\n")
}
## Prueba Shapiro-Wilk para glucosa : p-valor = 4.461266e-06
## Prueba Shapiro-Wilk para leucocitos : p-valor = 3.012424e-08
## Prueba Shapiro-Wilk para linfocitos : p-valor = 0.02325789
## Prueba Shapiro-Wilk para neutrofilos : p-valor = 5.260696e-09
## Prueba Shapiro-Wilk para chol : p-valor = 0.681551
## Prueba Shapiro-Wilk para hdl : p-valor = 0.003665917
## Prueba Shapiro-Wilk para hierro : p-valor = 0.0001578922
## Prueba Shapiro-Wilk para igA : p-valor = 0.0006235956
## Prueba Shapiro-Wilk para igE : p-valor = 9.514287e-09
## Prueba Shapiro-Wilk para igG : p-valor = 0.002674466
## Prueba Shapiro-Wilk para igN : p-valor = 6.311476e-08
## Prueba Shapiro-Wilk para ldl : p-valor = 1.156418e-09
## Prueba Shapiro-Wilk para pcr : p-valor = 1.831081e-14
## Prueba Shapiro-Wilk para transferrina : p-valor = 0.6637549
## Prueba Shapiro-Wilk para trigliceridos : p-valor = 4.855055e-07
## Prueba Shapiro-Wilk para cpk : p-valor = 4.391141e-05
Al observar los histogramas de las variables bioquímicas, se puede notar que estas presentan distintas formas de distribución. Por ejemplo, variables como la glucosa, chol y transferrina muestran distribuciones que tienden a ser simétricas, con un núcleo de valores concentrados cerca de un rango central y sin demasiados valores extremos. En contraste, variables como pcr y igE exhiben una clara asimetría positiva, con la mayoría de los valores agrupados hacia la izquierda y una cola alargada hacia la derecha, lo que indica la presencia de valores atípicos en el extremo superior. Asimismo, variables como hdl y hierro muestran distribuciones más uniformes, con una dispersión relativamente equilibrada en un amplio rango de valores. Por otro lado, variables como ldl e igG presentan una mayor dispersión, lo que sugiere heterogeneidad en la población, posiblemente debido a factores individuales o tratamientos específicos. Estos hallazgos reflejan la diversidad de perfiles bioquímicos en la población, lo que podría tener implicaciones importantes en el diagnóstico y tratamiento clínico.
No todas las variables analizadas siguen una distribución normal o simétrica. Aunque algunas variables como glucosa, chol y transferrina tienen distribuciones que podrían aproximarse a una campana de Gauss, otras variables, como pcr, igE y ldl, muestran distribuciones asimétricas, con una fuerte concentración de datos en un extremo y colas alargadas hacia el otro. Esto sugiere que los datos no se distribuyen uniformemente alrededor de una media central. Para confirmar si alguna de estas variables sigue realmente una distribución normal, se podrían aplicar pruebas estadísticas específicas, como la prueba de Shapiro-Wilk o Kolmogorov-Smirnov. En general, estas observaciones indican que la normalidad no es una característica universal en este conjunto de datos, lo que implica la necesidad de considerar métodos estadísticos no paramétricos para ciertos análisis. Por último, la diversidad en las distribuciones también refuerza la idea de que las variables bioquímicas están influenciadas por múltiples factores, incluyendo genética, ambiente y condiciones clínicas.
knitr::opts_chunk$set(
echo = TRUE,
warning = FALSE,
message = FALSE,
fig.align = "center",
fig.width = 12,
fig.height = 10
)
# Cargar librerías necesarias
library(pheatmap)
library(ComplexHeatmap)
## Loading required package: grid
## ========================================
## ComplexHeatmap version 2.22.0
## Bioconductor page: http://bioconductor.org/packages/ComplexHeatmap/
## Github page: https://github.com/jokergoo/ComplexHeatmap
## Documentation: http://jokergoo.github.io/ComplexHeatmap-reference
##
## If you use it in published research, please cite either one:
## - Gu, Z. Complex Heatmap Visualization. iMeta 2022.
## - Gu, Z. Complex heatmaps reveal patterns and correlations in multidimensional
## genomic data. Bioinformatics 2016.
##
##
## The new InteractiveComplexHeatmap package can directly export static
## complex heatmaps into an interactive Shiny app with zero effort. Have a try!
##
## This message can be suppressed by:
## suppressPackageStartupMessages(library(ComplexHeatmap))
## ========================================
## ! pheatmap() has been masked by ComplexHeatmap::pheatmap(). Most of the arguments
## in the original pheatmap() are identically supported in the new function. You
## can still use the original function by explicitly calling pheatmap::pheatmap().
##
## Attaching package: 'ComplexHeatmap'
## The following object is masked from 'package:pheatmap':
##
## pheatmap
library(grid)
library(ragg)
# Fijar la semilla para reproducibilidad
set.seed(1995)
# Cargar el dataset
data <- read.csv("/Users/estefanialejandracasallassamper/Documents/MASTER/Estadistica y R/mubio02_act1/Dataset expresion genes.csv",
header = TRUE,
row.names = 1)
# Seleccionar las columnas que comienzan con 'AQ_'
genes_data <- data[, grep("^AQ_", colnames(data))]
# Escalar los datos
data_scaled <- scale(genes_data)
# Crear el heatmap avanzado con ajuste de clustering y diseño
ht <- Heatmap(
data_scaled,
row_km = 3,
column_km = 3,
name = "Expresión",
cluster_rows = TRUE,
cluster_columns = TRUE,
show_row_names = TRUE,
show_column_names = TRUE,
column_names_gp = gpar(fontsize = 8), # Ajustar el tamaño de las etiquetas de las columnas
row_names_gp = gpar(fontsize = 8), # Ajustar el tamaño de las etiquetas de las filas
heatmap_legend_param = list(title_gp = gpar(fontsize = 10, fontface = "bold")) # Ajustar leyenda
)
# Dibujar el heatmap y ajustar las posiciones
draw(ht,
heatmap_legend_side = "right",
annotation_legend_side = "left")
# Agregar un título ajustado
grid.text(
"Heatmap con Clustering por Genes y Pacientes",
y = unit(1, "npc") - unit(0.25, "lines"),
gp = gpar(fontsize = 16, fontface = "bold")
)
Observando el heatmap de la expresión de los genes, se puede identificar que los pacientes (representados por las filas) se agrupan en clústeres que indican patrones similares de expresión génica. Los pacientes dentro de un mismo clúster tienen perfiles de expresión de genes muy similares entre sí, lo que sugiere que estos pacientes pueden compartir características biológicas o clínicas similares que afectan su respuesta al tratamiento. En el gráfico, los clústeres de pacientes muestran agrupamientos evidentes donde, por ejemplo, algunos pacientes tienen una mayor expresión de genes relacionados con la inflamación (como AQ_IL6 y AQ_TNF), lo que podría indicar que estos pacientes tienen una respuesta inflamatoria más pronunciada. Otros clústeres muestran una expresión más baja de estos genes, lo que podría implicar diferentes respuestas inmunológicas o metabólicas.
La dispersión en los datos también es notable, ya que algunos pacientes tienen expresiones más uniformes en todo el conjunto de genes, mientras que otros muestran una mayor variabilidad en la expresión, lo que podría indicar una heterogeneidad en la respuesta de los pacientes al tratamiento. Estos patrones diferenciados en la expresión genética pueden ser el resultado de factores biológicos o clínicos como la edad, el estado de salud general, o incluso características específicas del tratamiento administrado.
El heatmap también muestra que ciertos grupos de genes tienen patrones de expresión similares entre sí. Genes que están relacionados con procesos similares, como la inflamación o la respuesta inmune, tienden a agruparse en una misma área del gráfico, mostrando una expresión más alta o más baja de manera coherente en varios pacientes. Por ejemplo, genes como AQ_IL6, AQ_TNF y AQ_CD274 muestran patrones de expresión similares, lo que sugiere que estos genes están co-regulados en respuesta a ciertos factores biológicos o condiciones del tratamiento.
En contraste, algunos genes involucrados en otras vías biológicas, como los relacionados con el metabolismo (AQ_PPARγ, AQ_MAPK1) o la diferenciación celular, pueden mostrar una expresión diferenciada, separándose en diferentes clústeres del heatmap. Esto indica que la regulación de estos genes no es necesariamente coordinada con los genes inflamatorios y puede depender de otros factores que varían entre los pacientes.
El análisis del heatmap revela tanto agrupaciones claras de pacientes con respuestas similares al tratamiento como grupos de genes con patrones de expresión comunes. Esta información es valiosa para entender cómo las condiciones del tratamiento pueden afectar a diferentes pacientes de manera distinta y cómo los genes implicados en procesos clave como la inflamación, la respuesta inmune y el metabolismo responden de manera diferente según el entorno biológico y los tratamientos administrados.